远程连接Linux主机

GO

1. 使用Putty连接远程Linux主机

Putty免费开源,小巧玲珑,在WIndows和Linux上都支持。所以我选择使用这个工具来管理远程Linux主机。使用它的好处是:可以随意的复制粘贴,可以通过鼠标滚轮查看之前显示的历史信息。

Putty套件的工具有很多,它们的功能如下所示:

  • PuTTY(SSH和telnet客户端软件)
  • PSCP(SCP客户端,用来远程复制文件)
  • PSFTP(SFTP客户端,使用SSH协议传输文件)
  • PuTTYtel(一个只有telnet功能的客户端软件)
  • Plink(Windows下的命令行接口,使用它可以在cmd下使用PuTTY)
  • Pageant(SS和的密钥守护进程,开启后,密钥保存到内存中,连接时不再输入密钥的密码,PuTTY、PSCP、PSFTP和Plink都可以使用)
  • PuTTYgen(生成密钥对的工具)

在本文中,只用到PuTTY和PuTTYgen两个软件。


1.1. 使用密码登陆


  1. 填写远程Linux基本信息
    • Host Name(or IP address)这一栏填 服务器的IP。
    • Port 这一栏保持22不变。
    • Connection type 也保持ssh不变。
    • Save Sessions 这里自定义一个名字,主要用来区分主机。
  2. 定义字符集
    • 为了防止乱码,对于管理安装了中文支持的远程Linux系统来说,要在Putty这里也设置支持中文。
    • 点一下左侧的 Window –> Translation,看右侧的 Character set translation on received data,选择 UTF-8。
    • 然后再点一下左侧的 Session,最后点右侧的 save。
  3. 远程连接Linux
    • 点Open,初次连接是会有一个提示(第一次连接的时候),它的意思是要打开的Linux还未在本机登记,是否要信任它。点击“是”即可连接。
    • 然后连接成功后即可登陆管理远程的Linux了。

1.2. 使用密钥登陆


SSH服务支持以一种安全认证机制,即密钥认证。所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(publickey), 任何人都可以看到其内容,用于加密;另一个称为私钥(privatekey),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用私钥可以轻松解密,但根据公钥来猜测私钥却十分困难。SSH 的密钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和私钥。PuTTY 是可以使用这种机制登录 Linux 的。

  1. 生成密钥对
    • Putty生成密钥对的工具是Puttygen,打开它。右下角的 1024 改成 2048,这表示密钥长度为 2048 位,这样更安全,然后点一下 ―Generate‖按钮, 这样就开始生成密钥了,请来回动一下鼠标,这样才可以快速生成密钥对,大约几秒后就完了。
    • “Key comment”这里可以保持不变也可以自定义,它是对该密钥的简单介绍。“Kye passphrase”这里用来给你的密钥设置密码,这样安全一些,当然也可以留空,建议你设置一个密码。“Confirm passphrase”这里再输入一遍刚刚你设置的密码。
  2. 保存私钥
    • 单击“Save private key”,选择一个存放路径,并定义名字,点“保存”。这个就是所谓的私钥(一个*.ppk文件),请把它保存到一个比较安全的地方,谨防丢掉或被别人看到。
  3. 复制公钥到Linux
    • 回到刚才生成密钥的窗口,在 “Key”的下方有一段长长的字符串,这串字符串就是公钥的内容,把整个公钥字符串复制下来。然后粘贴到 Linux 的这个文件中: /root/.ssh/authorized_keys。注意这个文件的名字是固定的。下面请做如下操作:
      • 创建/root/.ssh 目录,因为这个目录默认是不存在的。# mkdir /root/.ssh
      • 更改这个目录的权限。# chmod 700 /root/.ssh
      • 把公钥内容粘贴进/root/.ssh/authorized_keys 文件中。
        • vi /root/.ssh/authorized_keys
        • 回车后,按一下“i”进入编辑模式,然后直接点击鼠标右键就粘贴了,粘贴后,按一下“Esc”键,然后输入“:wq”回车保存退出该文件。
  4. 关闭SeLinux
    • SeLinux 是 CentOS 的一种安全机制,它的存在的确让 Linux 系统安全了很多,但也产生了不少的麻烦。在这,如果不关闭 seLinux,使用密钥登录会提示 “Server refused our key”, 关闭方法如下:
      • 临时关闭:setenforce 0
      • 永久关闭:vi /etc/selinux/config ,把该配置文件中的SELINUX=enforcing修改为“SELINUX=disabled”,保存退出后然后重启系统。
      • 说明: /etc/selinux/config配置文件中有三种模式:enforcing(默认开启)、permissive(提醒)和disabled(关闭)。
  5. 关闭防火墙
    • 关闭netfilter (即iptables)
    • iptables -F 临时将iptables的规则清空(防火墙清空)
    • /etc/init.d/iptables save (或service iptables save) 将清楚后的防火墙规则保存到 /etc/sysconfig/iptables
  6. 设置putty通过密钥登陆
    • 打开 PuTTY 软件,点一下我们保存好的 session,然后点右侧的“Load”,在左侧靠下面点一下“SSH”前面的+然后选择“Auth”看右侧“Private key file for authentication:”下面的长条框里目前为空,点一下“Browse”, 找到我们刚刚保存好的私钥,点“打开”。此时这个长条框里就有了私钥的地址,当然你也可以自行编辑这个路径。然后再回到左侧,点一下最上面的“Session”,在右侧再点一下“Save”。
    • 保存好 session 后,点一下右下方的“Open”。出现登录界面,你会发现和原来的登录提示内容有所不同。
    • 现在不再输入 root 密码,而是需要输入密钥的密码,如果先前在生产密钥的时候你没有设置密码,输入 root 后会直接登录系统。
  7. 需要注意几点:
    • /root/.ssh目录的权限为700
    • SELinux要关闭
    • /root/.ssh/authorized_keys文件名要写对
    • 公钥的文件内容要粘贴对

2. 两台Linux互相登陆

有时候需要在Linux系统上登陆到另一台Linux主机,这就需要用到以下的技能。用以实现这个目的,CentOS自带的客户端软件是 openssh-clients。


2.1. 检查openssh-clients是否安装


检查是否安装,运行下面的命令:
ssh -V

若没有安装,则运行下面的命令安装:
yum install -y openssh-clients


2.2. 使用密码登陆


  1. 登陆命令格式如下:
    ssh Username@IPaddress
    一个例子: ssh root@192.168.0.105
  2. 查看当前登陆的用户身份:
  • whoami 仅显示用户名
  • who am i 显示用户名、登陆终端、登陆时间、登陆来源IP

2.3. 使用密钥登陆


  1. 客户端生成密钥对
    执行如下命令来生成密钥对:
    ssh-keygen
    • “Enter file in which to save the key (/root/.ssh/id_rsa): “ 首先,可以自定义私钥的存放位置,默认路径为/root/.ssh/id_rsa。可以采用默认值,回车即可。
    • “Enter passphrase (empty for no passphrase): “ 然后,定义私钥的密码,可以留空,直接回车即可。也可以设置一个密码。
    • “Enter same passphrase again: “ 接下来,会让我们再一次输入密码,然后回车,变生成了密钥对了。
    • 可以在相关的目录里面找到私钥(id_rsa)和公钥(id_rsa.pub)
  2. 把把公钥复制到目标Linux上面
    • 查看公钥内容并复制
    • 把复制的内容粘贴到 /root/.ssh/suthorized_keys(该文件的创建过程参考Putty的密钥登陆)
    • 确认该文件的权限,chmod 600 /root/.ssh/authorized_keys
  3. 登录Linux
    • ssh 目标Linux的IP地址

补充:非root用户的密钥登陆与root用户的配置过程类似。


3. 补充内容

3.1. SSH限制来源IP

即SSH的黑名单和白名单,是以下这两个文件:

  • /etc/hosts.allow
  • /etc/hosts.deny

3.2. 禁止普通用户登陆系统

当服务器进行高负荷的管理操作时,禁止普通用户登陆系统的方法如下:

1
2
touch /etc/nologin //禁止
rm -f /etc/nologin //取消禁止

OK

0%